/**********************************************
*  Classes:   TextureProperty
*  Desc:      Defines a texture property. Derives
*             from NodeProperty.
*  Author:    Vaios Kalpias-Ilias (C) 2008-2009
***********************************************/

#ifndef TEXTUREPROPERTY_H
#define TEXTUREPROPERTY_H

#include "NodeProperty.h"


class TextureProperty : public NodeProperty
{
	
public:

	enum EnvironmentState
	{
		STATE_MODULATE,
		STATE_DECAL,
		STATE_BLEND,
		STATE_REPLACE

	};

	enum TextureFileType
	{
		FILETYPE_BMP,
		FILETYPE_TGA,
		FILETYPE_JPG,
		FILETYPE_PNG
	};

	TextureProperty(unsigned int id,
		            unsigned int kApiType,
					TextureFileType kFileType);
	~TextureProperty();

	PropertyType GetType() const
	{
		return PROPERTY_TEXTURE;
	}

	unsigned int GetApiType() const
	{
		return m_eApiType;
	}

	TextureFileType GetFileType() const
	{
		return m_eFileType;
	}

	unsigned int GetId() const
	{
		return m_uiTexId;
	}

	// sets texture environment state
	void SetEnvironmentState(EnvironmentState state);

private:

	unsigned int m_uiTexId;
	EnvironmentState m_eEnvState;
	unsigned int m_eApiType;
	TextureFileType m_eFileType;
	
};

SmartPointer(TextureProperty);

#endif